<nodesAreCodesimianObjects>
	<goal>
		Each node is a CS with at least 2 parameters.
		P(0) is array of child nodes, as Node[] array for efficiency, and cSize public int for efficiency.
		P(1) is array of doubles (weights in a neural network, for example), as double[] array for efficiency, and dSize public int for efficiency.
		P(1) can be wrapped by a PrimitiveArray.DoubleArray for efficiency. Other optimizations are needed.
		In network algorithms, the codesimian interface will be bypassed and use them as Nodes and Node[] and double[] directly.
		Similarly, the functions of constant quantity of doubles (fDs) can directly use the double[] in P(1).
		A problem may be that most CSs do not return a backing double[], just a copy.
	</goal>
	<problem>
		If CS implemented List, the sublist and iterators would complicate modifications to either side.
		<solution>Throw if ask for iterator or sublist. But that causes other problems.</solution>
		<solution>???</solution>
	</problem>
	<problem>
		CS can do backing arrays, but CS does not work well with a forced backing array.
		If CS that wraps Node is not backed by an array of double in P(1), it will be very slow for neural networks.
		<solution>Use double arrays but not backed arrays. Copy every time. Use setL(start, doubleArray, size) etc.</solution>
		<solution>Do many calculations in 1 array, then copy it to the CS's double array at most once.</solution>
	</problem>
</nodesAreCodesimianObjects>